//
// Created by PC on 2023/4/24.
/*
http://www.aisichuang.net/#/main/Competition/TitlePage?id=1556&raceId=1292&stateanswer=false
 2023春季伴学挑战赛04：C++语言
    时间限制: 1000 MS 内存限制: 256 MB
 字符统计
题目描述

李老师给出了两个字符串 a 和 b，并给小A同学布置了两个任务。

    统计两个字符串中公共字符的个数。例如 ABACFGG 和 AAADCG，两个串中都包含 2 个字母 A，1个字母 C 和 1 个字母 G，所以公共字符个数为 4 。
    统计两个字符串相同位置处相同字符的个数。例如 ABACFGG 和 AAADCG，在 1,3,6 号位置上的字符相同，即 3 个。

现在，请你编写程序帮小A同学完成这两个任务。
输入格式
第一行：字符串 a，仅包含大写字母，长度 ≤1000
第一行：字符串 b，仅包含大写字母，长度 ≤1000
输出格式
第一行一个整数：公共字符的个数。
第二行一个整数：相同位置处相同字符的个数。
样例 #1
样例输入 #1
ABACFGG
AAADCG
样例输出 #1
4
3

 讲解视频: 10'45''
https://app19lud1c73566.h5.xiaoeknow.com/p/course/video/v_642f9349e4b0cf39e6b7f549
 */
// pass
#include <iostream>
using namespace std;

int main()
{
    string a,b;
    int na,nb,la[26]={0},lb[26]={0},count1=0,count2=0;
    cin>>a;
    cin>>b;
    int lena=a.length();
    int lenb=b.length();
    int j=0;
    while(j<lena+lenb)
    {
        if (j<lena)
        {
            la[a[j]-'A']++;
        }
        if(j<lenb)
        {
            lb[b[j]-'A']++;
        }
        if (j<lena && j<lenb && a[j]==b[j])
        {
            count2++;
        }
        j++;
    }
//    for(char i: a)
//    {
//        la[i-'A']++;
//    }
//    for(char i:b)
//    {
//        lb[i-'A']++;
//    }
    for (int j = 0; j < 26; ++j)
    {
        if (la[j]!=0 && lb[j]!=0)
        {
            count1+=la[j]<lb[j]?la[j]:lb[j];
        }
    }
//    int len = lena<=lenb?lena:lenb;
    printf("%d\n",count1);
    printf("%d\n",count2);
//    printf("%s\n",a.c_str());
//    printf("%s\n",b.c_str());
    return 0;
}
